草庐IT

Java HotSpot 枚举开销

全部标签

java - 枚举和android注解intDef

我有一个枚举:publicenumAppEnums{SERVICE_ERROR,CONNECTION_ERROR;}我想在AndroidAnnotation的intDef中使用它:@IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR})public@interfaceServiceErrors{}错误显示:incompatibletypesfound,required:'long'我能用这种不兼容性做些什么?我不想手动处理AppEnum参数的值,Enum通常会自动创建值。AppEnums.CONNECTION_ERROR.o

java - 在 Java 8 中获取枚举值作为字符串列表

是否有任何Java8方法或简单方法,将枚举值作为字符串列表返回,例如:ListsEnum=getEnumValuesAsString(); 最佳答案 您可以这样做(Java8之前):ListenumValues=Arrays.asList(Enum.values());或ListenumValues=newArrayList(EnumSet.allOf(Enum.class));使用Java8特性,您可以将每个常量映射到其名称:ListenumNames=Stream.of(Enum.values()).map(Enum::name

java - 在 Java 8 中获取枚举值作为字符串列表

是否有任何Java8方法或简单方法,将枚举值作为字符串列表返回,例如:ListsEnum=getEnumValuesAsString(); 最佳答案 您可以这样做(Java8之前):ListenumValues=Arrays.asList(Enum.values());或ListenumValues=newArrayList(EnumSet.allOf(Enum.class));使用Java8特性,您可以将每个常量映射到其名称:ListenumNames=Stream.of(Enum.values()).map(Enum::name

java - java中的枚举值列表

是否可以创建枚举值的ArrayList(并对其进行操作)?例如:enumMyEnum{ONE,TWO}MyEnummy=MyEnum.ONE;Listal=newArrayList();al.add(my);al.remove(al.size()-1); 最佳答案 你可以简单地写newArrayList(Arrays.asList(MyEnum.values())); 关于java-java中的枚举值列表,我们在StackOverflow上找到一个类似的问题:

java - java中的枚举值列表

是否可以创建枚举值的ArrayList(并对其进行操作)?例如:enumMyEnum{ONE,TWO}MyEnummy=MyEnum.ONE;Listal=newArrayList();al.add(my);al.remove(al.size()-1); 最佳答案 你可以简单地写newArrayList(Arrays.asList(MyEnum.values())); 关于java-java中的枚举值列表,我们在StackOverflow上找到一个类似的问题:

java - 如何在 Java 枚举中定义静态常量?

有没有办法在Java枚举声明中定义静态最终变量(实际上是常量)?我想要的是在一个地方定义BAR(1...n)值的字符串文字值:@RequiredArgsConstructorpublicenumMyEnum{BAR1(BAR_VALUE),FOO("Foo"),BAR2(BAR_VALUE),...,BARn(BAR_VALUE);privatestaticfinalStringBAR_VALUE="Bar";@GetterprivatefinalStringvalue;}对于上面的代码,我收到以下错误消息:在定义之前无法引用字段。 最佳答案

java - 如何在 Java 枚举中定义静态常量?

有没有办法在Java枚举声明中定义静态最终变量(实际上是常量)?我想要的是在一个地方定义BAR(1...n)值的字符串文字值:@RequiredArgsConstructorpublicenumMyEnum{BAR1(BAR_VALUE),FOO("Foo"),BAR2(BAR_VALUE),...,BARn(BAR_VALUE);privatestaticfinalStringBAR_VALUE="Bar";@GetterprivatefinalStringvalue;}对于上面的代码,我收到以下错误消息:在定义之前无法引用字段。 最佳答案

java - 查找 Java 枚举的最佳实践

我们有一个RESTAPI,客户端可以在其中提供代表在Java枚举中定义在服务器上的值的参数。所以我们可以提供一个描述性错误,我们将这个lookup方法添加到每个Enum。好像我们只是在复制代码(不好)。有更好的做法吗?publicenumMyEnum{A,B,C,D;publicstaticMyEnumlookup(Stringid){try{returnMyEnum.valueOf(id);}catch(IllegalArgumentExceptione){thrownewRuntimeException("Invalidvalueformyenumblahblah:"+id);}}

java - 查找 Java 枚举的最佳实践

我们有一个RESTAPI,客户端可以在其中提供代表在Java枚举中定义在服务器上的值的参数。所以我们可以提供一个描述性错误,我们将这个lookup方法添加到每个Enum。好像我们只是在复制代码(不好)。有更好的做法吗?publicenumMyEnum{A,B,C,D;publicstaticMyEnumlookup(Stringid){try{returnMyEnum.valueOf(id);}catch(IllegalArgumentExceptione){thrownewRuntimeException("Invalidvalueformyenumblahblah:"+id);}}

java - 枚举类型的 Emma 覆盖率

我正在运行EclEmma,它是Eclipse的Emma插件,覆盖率报告仅显示我定义的Enum的部分覆盖率,即使它显示Enum中唯一的值被覆盖。我假设支持Enum的隐含方法存在覆盖差距,但我不太确定。例如,对于这个Enum,EclEmma以绿色突出显示所有内容,但包声明除外:packagecom.blah;publicenumUserRole{HAS_ACCESS}如果我调出类(class)的覆盖范围详细信息,我会看到:我的问题是,使用EclEmma对我的Enum类进行100%覆盖的最佳方法是什么? 最佳答案 您看到的是由于枚举而生成